import cv2
image = cv2.imread("E:\opencv\opencv\sources\samples\data\lena.jpg")
#转换为灰度图像
grayImg = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
#dst = cv2.Sobel(src,ddepth,dx.dy[,dst[,ksize[,scale[,delta[,borderType]]]]])
#dst 表示图像入参
#ddepth 表示图像的深度 -1表示采用的是与原图像相同的深度，目标图像必须大于等于原图像深度
#dx、dy 表示求导的阶数，0表示这个方向上没有求导，一般为0，1，2
#ksize 表示sobel算子的大小，必须为1，3，5，7
#scale 表示缩放倒数的比例常数，默认情况下没有伸缩系数
#delta 表示一个可选的增量，将会加到最终的Ddst中,默认情况下没有额外的值加到dst中
#borderType 表示图像边框模式，默认值为cv2.BORDER_DEFAULT
x = cv2.Sobel(grayImg,cv2.CV_16S,1,0)
y = cv2.Sobel(grayImg,cv2.CV_16S,0,1)

absX = cv2.convertScaleAbs(x)
absY = cv2.convertScaleAbs(y)

sobelImg = cv2.addWeighted(absX,0.5,absY,0.5,0)

cv2.imshow('absX',absX)
cv2.imshow('absY',absY)

cv2.imshow('sobelImg',sobelImg)

cv2.waitKey(0)